

abstract class ServerEndpoint[-R, F[_]] {
  type T0
  type T1
  type T2
}
object ServerEndpoint {
  type Full[_T0, _T1, _T2, -R, F[_]] =
    ServerEndpoint[R, F] { 
    type T0 = _T0
    type T1 = _T1
    type T2 = _T2
    }
  def apply[_T0, _T1, _T2, R, F[_]]: ServerEndpoint.Full[_T0, _T1, _T2, R, F] = ???
}

object Test {
  type Route = ServerEndpoint[Any, Option]
  def routes: List[ServerEndpoint[Any, Option]] = { 
    val instance0 = ServerEndpoint[Int, Unit, Int, Any, Option]
    val instance1 = ServerEndpoint[Int, Int, Int, Any, Option]
    val instance2 = ServerEndpoint[Int, Int, Int, Any, Option]
    val instance3 = ServerEndpoint[Int, Int, Unit, Any, Option]
    val instance4 = ServerEndpoint[Unit, Int, Unit, Any, Option]
    val instance5 = ServerEndpoint[Int, Unit, Unit, Any, Option]
    val instance6 = ServerEndpoint[Int, Unit, Int, Any, Option]
    val instance7 = ServerEndpoint[Int, Unit, Unit, Any, Option]
    val instance8 = ServerEndpoint[Unit, Int, Unit, Any, Option]
    val instance9 = ServerEndpoint[Unit, Int, Int, Any, Option]
    val instance10 = ServerEndpoint[Int, Int, Unit, Any, Option]
    val instance11 = ServerEndpoint[Int, Int, Int, Any, Option]
    val instance12 = ServerEndpoint[Int, Int, Unit, Any, Option]
    val instance13 = ServerEndpoint[Unit, Unit, Int, Any, Option]
    val instance14 = ServerEndpoint[Unit, Unit, Unit, Any, Option]
    val instance15 = ServerEndpoint[Unit, Int, Int, Any, Option]
    val instance16 = ServerEndpoint[Int, Int, Unit, Any, Option]
    val instance17 = ServerEndpoint[Int, Int, Unit, Any, Option]
    val instance18 = ServerEndpoint[Int, Int, Unit, Any, Option]
    val instance19 = ServerEndpoint[Unit, Unit, Unit, Any, Option]
    val instance20 = ServerEndpoint[Unit, Unit, Int, Any, Option]
    val instance21 = ServerEndpoint[Unit, Int, Int, Any, Option]
    val instance22 = ServerEndpoint[Int, Unit, Unit, Any, Option]
    val instance23 = ServerEndpoint[Unit, Unit, Int, Any, Option]
    val instance24 = ServerEndpoint[Int, Int, Int, Any, Option]
    val instance25 = ServerEndpoint[Int, Unit, Unit, Any, Option]
    val instance26 = ServerEndpoint[Unit, Int, Unit, Any, Option]
    val instance27 = ServerEndpoint[Int, Int, Int, Any, Option]
    val instance28 = ServerEndpoint[Int, Unit, Unit, Any, Option]
    val instance29 = ServerEndpoint[Unit, Unit, Unit, Any, Option]
    val instance30 = ServerEndpoint[Int, Int, Unit, Any, Option]
    val instance31 = ServerEndpoint[Unit, Unit, Unit, Any, Option]
    val instance32 = ServerEndpoint[Int, Unit, Unit, Any, Option]
    val instance33 = ServerEndpoint[Int, Unit, Int, Any, Option]
    val instance34 = ServerEndpoint[Int, Unit, Int, Any, Option]
    val instance35 = ServerEndpoint[Unit, Int, Unit, Any, Option]
    val instance36 = ServerEndpoint[Unit, Int, Int, Any, Option]
    val instance37 = ServerEndpoint[Unit, Int, Int, Any, Option]
    val instance38 = ServerEndpoint[Int, Unit, Unit, Any, Option]
    val instance39 = ServerEndpoint[Unit, Int, Unit, Any, Option]
    val instance40 = ServerEndpoint[Unit, Int, Int, Any, Option]
    val instance41 = ServerEndpoint[Int, Unit, Int, Any, Option]
    val instance42 = ServerEndpoint[Int, Int, Int, Any, Option]
    val instance43 = ServerEndpoint[Int, Unit, Unit, Any, Option]
    val instance44 = ServerEndpoint[Unit, Int, Int, Any, Option]
    val instance45 = ServerEndpoint[Int, Int, Unit, Any, Option]
    val instance46 = ServerEndpoint[Unit, Unit, Int, Any, Option]
    val instance47 = ServerEndpoint[Unit, Unit, Int, Any, Option]
    val instance48 = ServerEndpoint[Unit, Int, Int, Any, Option]
    val instance49 = ServerEndpoint[Unit, Unit, Unit, Any, Option]
    val instance50 = ServerEndpoint[Unit, Int, Int, Any, Option]
    val instance51 = ServerEndpoint[Int, Unit, Int, Any, Option]
    val instance52 = ServerEndpoint[Unit, Unit, Unit, Any, Option]
    val instance53 = ServerEndpoint[Unit, Unit, Unit, Any, Option]
    val instance54 = ServerEndpoint[Int, Unit, Unit, Any, Option]
    val instance55 = ServerEndpoint[Unit, Unit, Unit, Any, Option]
    val instance56 = ServerEndpoint[Unit, Int, Int, Any, Option]
    val instance57 = ServerEndpoint[Int, Int, Unit, Any, Option]
    val instance58 = ServerEndpoint[Unit, Unit, Unit, Any, Option]
    val instance59 = ServerEndpoint[Int, Int, Int, Any, Option]
    val instance60 = ServerEndpoint[Unit, Unit, Int, Any, Option]
    val instance61 = ServerEndpoint[Int, Int, Int, Any, Option]
    val instance62 = ServerEndpoint[Int, Unit, Int, Any, Option]
    val instance63 = ServerEndpoint[Int, Int, Int, Any, Option]
    val instance64 = ServerEndpoint[Int, Unit, Unit, Any, Option]
    val instance65 = ServerEndpoint[Unit, Int, Unit, Any, Option]
    val instance66 = ServerEndpoint[Int, Unit, Int, Any, Option]
    val instance67 = ServerEndpoint[Int, Int, Unit, Any, Option]
    val instance68 = ServerEndpoint[Int, Int, Unit, Any, Option]
    val instance69 = ServerEndpoint[Int, Unit, Int, Any, Option]
    val instance70 = ServerEndpoint[Unit, Unit, Int, Any, Option]
    val instance71 = ServerEndpoint[Int, Int, Int, Any, Option]
    val instance72 = ServerEndpoint[Unit, Int, Unit, Any, Option]
    val instance73 = ServerEndpoint[Unit, Int, Int, Any, Option]
    val instance74 = ServerEndpoint[Unit, Int, Unit, Any, Option]
    val instance75 = ServerEndpoint[Unit, Int, Unit, Any, Option]
    val instance76 = ServerEndpoint[Int, Unit, Unit, Any, Option]
    val instance77 = ServerEndpoint[Int, Unit, Int, Any, Option]
    val instance78 = ServerEndpoint[Unit, Unit, Unit, Any, Option]
    val instance79 = ServerEndpoint[Int, Unit, Unit, Any, Option]
    val instance80 = ServerEndpoint[Int, Unit, Int, Any, Option]
    val instance81 = ServerEndpoint[Int, Int, Unit, Any, Option]
    val instance82 = ServerEndpoint[Int, Unit, Unit, Any, Option]
    val instance83 = ServerEndpoint[Int, Unit, Unit, Any, Option]
    val instance84 = ServerEndpoint[Unit, Int, Int, Any, Option]
    val instance85 = ServerEndpoint[Int, Int, Unit, Any, Option]
    val instance86 = ServerEndpoint[Unit, Int, Unit, Any, Option]
    val instance87 = ServerEndpoint[Unit, Int, Int, Any, Option]
    val instance88 = ServerEndpoint[Int, Int, Int, Any, Option]
    val instance89 = ServerEndpoint[Int, Int, Int, Any, Option]
    val instance90 = ServerEndpoint[Int, Int, Unit, Any, Option]
    val instance91 = ServerEndpoint[Unit, Int, Int, Any, Option]
    val instance92 = ServerEndpoint[Int, Int, Int, Any, Option]
    val instance93 = ServerEndpoint[Unit, Int, Unit, Any, Option]
    val instance94 = ServerEndpoint[Int, Unit, Int, Any, Option]
    val instance95 = ServerEndpoint[Int, Unit, Int, Any, Option]
    val instance96 = ServerEndpoint[Int, Unit, Int, Any, Option]
    val instance97 = ServerEndpoint[Int, Int, Int, Any, Option]
    val instance98 = ServerEndpoint[Int, Unit, Unit, Any, Option]
    val instance99 = ServerEndpoint[Unit, Int, Unit, Any, Option]
    List(instance0, instance1, instance2, instance3, instance4, instance5, instance6, instance7, instance8, instance9, instance10, instance11, instance12, instance13, instance14, instance15, instance16, instance17, instance18, instance19, instance20, instance21, instance22, instance23, instance24, instance25, instance26, instance27, instance28, instance29, instance30, instance31, instance32, instance33, instance34, instance35, instance36, instance37, instance38, instance39, instance40, instance41, instance42, instance43, instance44, instance45, instance46, instance47, instance48, instance49, instance50, instance51, instance52, instance53, instance54, instance55, instance56, instance57, instance58, instance59, instance60, instance61, instance62, instance63, instance64, instance65, instance66, instance67, instance68, instance69, instance70, instance71, instance72, instance73, instance74, instance75, instance76, instance77, instance78, instance79, instance80, instance81, instance82, instance83, instance84, instance85, instance86, instance87, instance88, instance89, instance90, instance91, instance92, instance93, instance94, instance95, instance96, instance97, instance98, instance99)
  }
}

